// 签章校验节点
export const validateTaskSign = (item: any) => {
  let errMsg = "";
  if (item.taskDefKey !== "signTask") {
    return errMsg;
  }
  // 同一个审批节点只能一个机构签章
  let companySign = false; // 机构签章
  let personalSign = false; // 个人签章
  item.assignees.forEach((user: any) => {
    if (!user.personalSign && !user.companySign) {
      errMsg = `审批流中的${item.taskName}审批节点的审批人【${user.userName}】至少选择一种签章`;
      return true;
    }
    if (companySign) {
      if (user.companySign) {
        errMsg = `个人签章和机构签章必须有且仅有一个`;
        return true;
      }
    } else {
      companySign = user.companySign;
    }
    if (personalSign) {
      if (user.personalSign) {
        errMsg = `个人签章和机构签章必须有且仅有一个`;
        return true;
      }
    } else {
      personalSign = user.personalSign;
    }
  });
  if (!companySign || !personalSign) {
    errMsg = `个人签章和机构签章必须有且仅有一个`;
  }
  return errMsg;
};
/**
 * @description 审批流签章校验
 */
export const approveFormItemCheck = {
  validate: (rule: any, value: any) => {
    if (!value) {
      return Promise.reject(new Error("申请审批流程不能为空"));
    }
    if (value) {
      let errMsg = "";

      value.some((item: any, index: number) => {
        if (errMsg) {
          return true;
        }
        if (
          item.assignees &&
          item.assignees.length == 0 &&
          ["ServiceTask", "ReceiveTask"].indexOf(item.taskType) === -1 &&
          !["unit", "unitCC"].includes(item.taskDefKey)
        ) {
          errMsg = `请选择${
            rule.list && rule.list.length > 0
              ? rule.list[index].taskName
              : `${item.taskName}审批节点`
          }`;
          return true;
        }
        // 用户校验
        if (!errMsg) {
          errMsg = validateTaskSign(item);
        }
        if (errMsg) {
          return true;
        }
        return false;
      });
      if (errMsg) {
        return Promise.reject(new Error(errMsg));
      } else {
        return Promise.resolve();
      }
    } else {
      return Promise.resolve();
    }
  },
};
